Hace algún tiempo, en el análisis en profundidad del rendimiento del hipervisor, nos encontramos ante un problema nativo de Simmetric MultiProcessing virtual (vSMP) que sería una metodología de Simmetric MultiProcessing (SMP), gracias a la cual podemos asignar más de una CPU virtual (vCPU) a una máquina virtual.
Esta característica le permitiría dar más potencia de cálculo a la máquina virtual, pero desafortunadamente no siempre es cierto y depende de la naturaleza de la aplicación si usa o no lógica de subprocesos múltiples, como se muestra en la siguiente ilustración:
Para responder mejor a la pregunta, enviamos una pregunta en la red social profesional linkedin . La «pregunta» que hicimos es la siguiente:
Programación de ciclos de máquinas virtuales de varias vCPU
Necesito uno que me explique, con detalle, las diferencias entre los hipervisores del kernel (ESX,XEN,HYPER-V,KVM) sobre el rendimiento real cuando definimos una Máquina Virtual con más de 1 vCPU. Creo que cuando una aplicación genérica, instalada en la máquina virtual con 2 vCPU, realiza una solicitud de ciclos de CPU, actualmente a las dos vCPU. Estas solicitudes van a una cola para que el host las procese. Creo que el host espera hasta que haya dos núcleos con ciclos de inactividad simultáneos.
Si el host tiene más máquinas virtuales que no están inactivas, nuestra máquina virtual multi-CPU perdió en rendimiento.
¿Es adecuado para ti? ¿Tienes experiencia al respecto? ¿Me pueden explicar las diferencias entre los granos? ¿Qué hipervisor es el mejor para estos eventos?
¡Gracias y buen año nuevo
Las mejores respuestas que recibimos fueron las siguientes:
Da Mindaugas Kiznis-IT Professional, arquitecto de soluciones de infraestructura de TI en CSC.
Esta presentación es quizás más del lado de VMware, porque fue hecha por un tipo de VMware, pero pronto muestra y compara cosas importantes sobre diferentes principios y productos de virtualización:
http://www.virtualization-symposia2008.lv/files/File/4_vmware_virtualization_symposia_latvia_thuber.pptTal vez estos documentos expliquen sobre la programación de CPU en la virtualización:
http://cs.gmu.edu/~hfoxwell/cs671projects/southern_v12n.pdf
http://www.cs.ucsd.edu/~dgupta/papers/per07-3sched-xen.pdfAquí hay una buena comparación de características:
http://www.it20.info/misc/virtualizationscomparison.htmSi aún tienes algunas preguntas específicas sobre virtualización, no dudes en escribirme e intentaré responderte.
Los enlaces que reporta Mindaugas son un material fantástico para el estudio y el análisis en profundidad y también para la comparación entre los distintos hipervisores, te invito a leerlos.
Da Manlio I.A. Frizzi-Consultor y contratista de tecnologías de la información y servicios en Brain Force. Evangelista de la virtualización.
hola Fabio, y, en primer lugar, ¡feliz año nuevo!
Lo que está diciendo es completamente correcto: la regla general para las máquinas virtuales de múltiples vCPU es crearlas solo si sabe que las aplicaciones que va a instalar/ejecutar están compiladas para usar la ejecución de subprocesos múltiples.
Si no es así, hazlo con 1 vCPU: el rendimiento será mejor.Además, hay algunos casos en los que la CPU múltiple degradará el rendimiento: Las máquinas virtuales con Citrix TS instalado en ellas deben ser de 1 vCPU: esto se debe a que Citrix TS hará muchos cambios de contexto y ESX hará otros cambios de contexto multiplicando la sobrecarga.
Otra cosa a tener en cuenta es tener instalado el kernel multiprocesador correcto: muchos sistemas operativos detectan múltiples CPU e instalan el kernel correcto para el número de CPU (v) que se han detectado: si necesita un kernel habilitado para SMP recuerde que, utilizado en un entorno de 1-(v)CPU, funcionará muy mal.
Para la pregunta del «mejor hipervisor»… Tengo mis ideas… En su lista de hipervisores, solo uno se puede usar en el entorno de producción…
Espero ayudar
Manlio
http://virtualaleph.blogspot.com
La respuesta de Manlio confirma nuestras dudas sobre el rendimiento de una VM multi vCPU si no evaluamos detenidamente el software que debe ejecutarse en ella.
Ahora queremos informar sobre un punto de referencia no oficial pero no sesgado realizado por Rick Vanover-MCITP, MCTS, MCSA, administrador de sistemas de Safelite AutoGlass. Un veterano de TI con 12 años de experiencia y columnista en línea de Virtualization Review.
El artículo completo se publica en el siguiente enlace : Lab Experiment Hypervisors
Las plataformas comparadas son:
VMware ESX 3.5
Microsoft Hyper-V
Citrix XenServer 5
Las especificaciones de hardware y máquina virtual son:
Requisitos de los huéspedes
* Soporta Windows Server 2003 R2 con Service Pack 2 (edición x86) como sistema operativo invitado
* Permitir el aprovisionamiento de máquinas virtuales invitadas en una de estas dos configuraciones:
* Memoria de 1024 MB, 10 GB de espacio en disco local
* Memoria de 2048 MB, 20 GB de espacio en disco local
* No hay límites de CPU
Requisitos del anfitrión
* Admite una instalación en los tres sistemas paralelos de idéntica configuración: Dell PowerEdge 2950 2×2 @ 3.0GHz, 16GB de RAM, 360GB de almacenamiento local en un solo array (RAID 5)
* Permitir el uso de matriz local para máquinas virtuales invitadas
Las pruebas realizadas se resumen en la siguiente imagen:
Y los resultados están todos en la siguiente imagen:
La prueba mostró que, a nivel de hipervisor, ESX está optimizado para menos cargas de trabajo. En el caso de las cargas de trabajo intensivas que no se pueden optimizar para la memoria sobrecomprometida, Hyper-V y XenServer deben considerarse los más adecuados. Sin embargo, recuerde que esta prueba es una prueba específica de SQL Server 2005 en una máquina virtual Windows 2003 de 32 bits.